/**
 * @description utils的control层
 * @author 印明帝
 */
const { ErrorModel,SuccessModel } = require('../model/ResModel')
const { uploadFileSizeFailInfo } = require('../model/errorInfo')
const { IMAGE_PATH,IMAGE_MAX_SIZE } = require('../conf/file')
const { customFormmidable,notDirDoCreateDir,removeFile,moveFile } = require('../utils/file')
// 如果不存在文件夹创建文件夹
notDirDoCreateDir(IMAGE_PATH)
/**
 * 保存传入的文件
 * @method saveFile
 * @param {Object} ctx koa2 ctx 
 */
async function saveFile(ctx) {
  // 获取form信息
  const formInfo = await  customFormmidable(ctx)
  // 解构获得的信息
  const { size, path,name,type } = formInfo['files[]']
  // 如果存入的文件大于20m就删除文件
  if(size > IMAGE_MAX_SIZE) {
    removeFile(path)
    return new ErrorModel(uploadFileSizeFailInfo)
  }
  // 防止重名
  const fileName = Date.now() + '.' + name 
  // 移动文件
  let result = await moveFile(path,IMAGE_PATH,fileName)
  // 返回修改后文件的地址
  let relativePath = {
    path: '/upload/image/'+fileName,
    name
  }
  // 返回
  return new SuccessModel(relativePath)
}


module.exports = {
  saveFile
}